#ifndef _PARENT_H_
#define _PARENT_H_

#include "cobject.h"
#include "base.h"

// 父类
typedef struct {
    cclass cls;
    base_s bobj; // 继承自基类

    // 虚函数定义
    CVIRTUAL int (*parent_get_val)(cobject);
    CVIRTUAL int (*parent_set_val)(cobject, int);

    int b;
} parent_s;

parent_s *parent_new(void);
void parent_del(parent_s **pself);
int parent_ctor(parent_s *self);
void parent_dtor(parent_s *self);

// 判断是否为parent类对象
#define parent_type(obj) cobject_type((obj), CCLASS_NAME(parent_s))

//本类特有，不可重写
int parent_print(cobject obj);

//可重写方法
CVIRTUAL int parent_get_val(cobject obj);
CVIRTUAL int parent_set_val(cobject obj, int val);
#endif
